unit prueba;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, Base, Grids, DBGrids, ExtCtrls, XPMan, ToolWin, ComCtrls,
  StdCtrls, Mask, Buttons;

type
  TPrioriodad=class(TObject)
    codigo:integer;
    descripcion:string;
  end;

  TEstado=class(TObject)
    codigo:integer;
    descripcion:string;
  end;

  TCliente=class(TObject)
    codigo:integer;
    nombre:string;
  end;

  TfrmReclamos = class(TfrmBase)
    DBGrid1: TDBGrid;
    GroupBox1: TGroupBox;
    Label1: TLabel;
    edtCodCliente: TEdit;
    cmbCliente: TComboBox;
    Label2: TLabel;
    dtpFechaReclamo: TDateTimePicker;
    Label3: TLabel;
    cmbEstado: TComboBox;
    edtCodEstado: TEdit;
    Label4: TLabel;
    cmbPrioridad: TComboBox;
    edtCodPrioridad: TEdit;
    Label5: TLabel;
    dtpFechaTurno: TDateTimePicker;
    Label6: TLabel;
    edtHora: TMaskEdit;
    chkPreventivo: TCheckBox;
    Label7: TLabel;
    edtDescripcion: TMemo;
    Label8: TLabel;
    edtCodReclamo: TEdit;
    Label9: TLabel;
    Label10: TLabel;
    edtFiltroCodigo: TEdit;
    edtFiltroCliente: TEdit;
    Button1: TButton;
    btnImprimir: TButton;
    btnNuevoReclamo: TButton;
    btnEditar: TBitBtn;
    btnGuardar: TBitBtn;
    btnCancelar: TBitBtn;
    procedure FormShow(Sender: TObject);
    procedure ListaCliente();
    procedure ListaPrioridad();
    procedure ListaEstado();
    procedure LlenarCombos();
    procedure Button1Click(Sender: TObject);
    procedure btnNuevoReclamoClick(Sender: TObject);
    procedure btnEditarClick(Sender: TObject);
    procedure btnGuardarClick(Sender: TObject);
    procedure btnCancelarClick(Sender: TObject);
  private
    { Private declarations }
  public
    bandera:integer;{ Public declarations }
  end;

var
  frmReclamos: TfrmReclamos;

implementation

uses Datos, NuevoReclamo;

{$R *.dfm}

procedure TfrmReclamos.FormShow(Sender: TObject);
begin
  inherited;
  bandera:=1;
  ListaCliente;
  ListaPrioridad;
  ListaEstado;

  frmDatos.qryFiltroReclamos.Connection:= frmDatos.ZConnection1;
  frmDatos.qryFiltroReclamos.SQL.Clear;
  frmDatos.qryFiltroReclamos.SQL.Text:='select * ' +
                                       'from reclamos r, clientes c, estado_reclamo e, prioridad_reclamo p '+
                                       'where r.cod_estado<>-1 '+
                                       'and r.cod_cliente=c.cod_cliente '+
                                       'and r.cod_estado=e.cod_estado '+
                                       'and r.cod_prioridad=p.cod_prioridad';
  frmDatos.qryFiltroReclamos.Open;

  DBGrid1.DataSource:=frmDatos.dsFiltroReclamos;

  frmDatos.qryFiltroReclamos.IndexFieldNames:='fecha_reclamo';
end;

procedure TfrmReclamos.ListaCliente;
var objeto:TCliente;
begin
  cmbCliente.Clear;
  frmDatos.qryFiltroClientes.First;
  while not frmDatos.qryFiltroClientes.Eof do
    begin
      objeto:=TCliente.Create;
      objeto.codigo:=frmDatos.qryFiltroClientes['cod_cliente'];
      objeto.nombre:=frmDatos.qryFiltroClientes['apellido_cliente'] +' '+ frmDatos.qryFiltroClientes['nombre_cliente'];
      cmbCliente.Items.AddObject(objeto.nombre,objeto);
      frmDatos.qryFiltroClientes.Next;
    end;
end;

procedure TfrmReclamos.ListaEstado;
var objeto:TEstado;
begin
  frmDatos.tblEstadoReclamo.Active:=true;
  cmbEstado.Clear;
  frmDatos.tblEstadoReclamo.First;
  while not frmDatos.tblEstadoReclamo.Eof do
    begin
      objeto:=TEstado.Create;
      objeto.codigo:=frmDatos.tblEstadoReclamo['cod_estado'];
      objeto.descripcion:=frmDatos.tblEstadoReclamo['descripcion_estado'];
      cmbEstado.Items.AddObject(objeto.descripcion,objeto);
      frmDatos.tblEstadoReclamo.Next;
    end;
  frmDatos.tblEstadoReclamo.Active:=false;
end;

procedure TfrmReclamos.ListaPrioridad;
var objeto:TPrioriodad;
begin
  frmDatos.tblPrioridadReclamo.Active:=true;
  cmbPrioridad.Clear;
  frmDatos.tblPrioridadReclamo.First;
  while not frmDatos.tblPrioridadReclamo.Eof do
    begin
      objeto:=TPrioriodad.Create;
      objeto.codigo:=frmDatos.tblPrioridadReclamo['cod_prioridad'];
      objeto.descripcion:=frmDatos.tblPrioridadReclamo['descripcion_prioridad'];
      cmbPrioridad.Items.AddObject(objeto.descripcion,objeto);
      frmDatos.tblPrioridadReclamo.Next;
    end;
  frmDatos.tblPrioridadReclamo.Active:=false;
end;

procedure TfrmReclamos.LlenarCombos;
var ObjetoEstado:TEstado;
    ObjetoPrioridad:TPrioriodad;
    ObjetoCliente:TCliente;
    i,posicion:integer;
begin
  posicion:=-1;
  for i:=0 to cmbCliente.Items.Count - 1 do
    begin
      ObjetoCliente:=TCliente(cmbCliente.Items.Objects[i]);
      if edtCodCliente.Text = IntToStr(ObjetoCliente.codigo) then
        begin
          posicion:=i;                    
        end;
    end;
  cmbCliente.ItemIndex:=posicion;

  posicion:=-1;
  for i:=0 to cmbEstado.Items.Count - 1 do
    begin
      ObjetoEstado:=TEstado(cmbEstado.Items.Objects[i]);
      if ObjetoEstado.codigo = StrToInt(edtCodEstado.Text) then
        cmbEstado.ItemIndex:=i;
    end;

  posicion:=-1;
  for i:=0 to cmbPrioridad.Items.Count - 1 do
    begin
      ObjetoPrioridad:=TPrioriodad(cmbPrioridad.Items.Objects[i]);
      if ObjetoPrioridad.codigo = StrToInt(edtCodPrioridad.Text) then
        cmbPrioridad.ItemIndex:=i;
    end;
end;

procedure TfrmReclamos.Button1Click(Sender: TObject);
begin
  inherited;
  Close;
end;

procedure TfrmReclamos.btnNuevoReclamoClick(Sender: TObject);
begin
  inherited;
  frmNuevoReclamo.ShowModal;
end;

procedure TfrmReclamos.btnEditarClick(Sender: TObject);
begin
  inherited;
  cmbEstado.Enabled:=true;
  btnEditar.Visible:=false;

  DBGrid1.Enabled:=false;
  edtFiltroCodigo.Enabled:=false;
  edtFiltroCliente.Enabled:=false;
  btnNuevoReclamo.Visible:=false;
  btnImprimir.Visible:=false;
  btnCancelar.Visible:=true;
  btnGuardar.Visible:=true;
end;

procedure TfrmReclamos.btnGuardarClick(Sender: TObject);
begin
  inherited;
  cmbEstado.Enabled:=false;
  btnEditar.Visible:=true;
  DBGrid1.Enabled:=true;
  edtFiltroCodigo.Enabled:=true;
  edtFiltroCliente.Enabled:=true;
  btnNuevoReclamo.Visible:=true;
  btnImprimir.Visible:=true;
  btnCancelar.Visible:=false;
  btnGuardar.Visible:=false;
end;

procedure TfrmReclamos.btnCancelarClick(Sender: TObject);
begin
  inherited;
  cmbEstado.Enabled:=false;
  btnEditar.Visible:=true;
  DBGrid1.Enabled:=true;
  edtFiltroCodigo.Enabled:=true;
  edtFiltroCliente.Enabled:=true;
  btnNuevoReclamo.Visible:=true;
  btnImprimir.Visible:=true;
  btnCancelar.Visible:=false;
  btnGuardar.Visible:=false;
end;

end.